#lang r5rs
(define fact (lambda (fact)
               (lambda (n)
                 (if (> n 1)
                     (* n (fact (- n 1)))
                     1))))
;(define F (lambda (f g) g (f f g)))
;((fact (F F fact)) 4)
(define F (lambda (f g) (f f (g (g g)))))
(F F fact)


                            

